package com.tbit.uqbike.webmanager.dao.core;

import com.tbit.uqbike.object.pojo.Activity;
import com.tbit.uqbike.object.pojo.ActivityMsg;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @Author:BUGTian
 * @DATE: 2022/5/17
 */
public interface ActivityDao {

    /**
     * 新增活动
     *
     * @param activity
     * @return
     */
    int insert(Activity activity);

    /**
     * 更新活动
     *
     * @param activity
     */
    void update(Activity activity);

    /**
     * 根据主键id查询活动信息
     *
     * @param id
     * @return
     */
    Activity selectById(@Param("id") Integer id);

    /**
     * 查询当前区域的所有活动
     *
     * @param accountId
     * @param isvalid
     * @return
     */
    List<Activity> selectList(@Param("accountId") Integer accountId, @Param("isvalid") Integer isvalid);

    /**
     * 查询当前的活动，一个类型只能有一条
     *
     * @param type
     * @param accountId
     * @return
     */
    Activity selectByType(@Param("type") Integer type, @Param("accountId") Integer accountId);

    /**
     * 查询开启的活动信息
     *
     * @return
     */
    List<ActivityMsg> selectActivityMsg();

    /**
     * 更新活动状态
     *
     * @param id
     * @param isvalid
     * @param state
     */
    void updateState(@Param("id") Integer id, @Param("isvalid") Integer isvalid, @Param("state") Integer state);

    /**
     * 查询当前区域的活动数量
     *
     * @param accountId
     * @return
     */
    int queryOpenCountByAccountId(@Param("accountId") Integer accountId, @Param("state") Integer state);

    /**
     * 删除活动
     *
     * @param id
     */
    void deleteById(@Param("id") Integer id);

    /**
     * 更新活动实际结束时间
     *
     * @param id
     * @param date
     */
    void updateExpireTime(@Param("id") Integer id, @Param("date") Date date);
}
